home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / demos / icse / icsua.sci < prev    next >
Text File  |  1999-09-16  |  1KB  |  43 lines

  1. //[co,u,g,itv,dtv,cof]=icsua(u,simu,nap,imp)
  2. //Calcul du controle optimal avec ponderation du controle initial
  3. //et ponderation arithmetique des poids des observations.
  4. //Une mise a l'echelle ramene toutes les composantes du controle
  5. //initial a 1.Les composantes initialement nulles le resteront.
  6. //Ne convient que si la borne inferieure est positive.
  7. //Formule de ponderation des poids :
  8. //cof(i,j)=nex/(abs(ob(1,j,i)) + ... + abs(ob(nex,j,i)) )
  9. //%Syntaxe
  10. //[co,u,g,itv,dtv,cof]=icsua(u,simu,nap,imp)
  11.  
  12. //variables d'entree :
  13. //u(nu) : parametres initiaux
  14. //nap   : nombre maximum d' appels du simulateur
  15. //imp       : valeur de debug pendant l'optimisation
  16. //variables de sortie :
  17. //co            : cout final
  18. //u(nu)         : parametres finaux
  19. //g(nu)         : gradient final
  20. //itv(nitv)     : tableau de travail (entiers fortran)
  21. //dtv(ndtv)     : tableau de travail (double precision fortran)
  22. //cof(nob,ntob) : coefficients de ponderation du cout
  23. //Utiliser les macros icot et icob pour extraire l'etat
  24. //!
  25. df0=1;
  26. if mini(binf) <=0, ..
  27.   error('appel de icsua avec binf non strictement positif'); end;
  28. for i=1:nu,u(1,i)=maxi( [binf(1,i),mini([u(1,i),bsup(1,i)])] ), end;
  29. ech=u;
  30. binf=binf./u;
  31. bsup=bsup./u;
  32. u=ones(1,nu);
  33. ico=1;
  34. yob=0.d0*ones(nob,ntob);
  35. ob=don;
  36. [cof]=fort('icscof',ico,1,'i',ntob,2,'i',nex,3,'i',...
  37.             nob,4,'i',yob,5,'d',ob,6,'d','sort',[1,nob*ntob],7,'d');
  38. [co,u,g,itv,dtv]=icsegen(u,simu,nap,imp)
  39. u=ech.*u
  40. //end
  41.  
  42.  
  43.